/// Copyright (c) 2005-2008, Simon Howard
/// Permission to use, copy, modify, and/or distribute this software
/// for any purpose with or without fee is hereby granted, provided
/// that the above copyright notice and this permission notice appear
/// in all copies.
///
/// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
/// WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
/// WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
/// AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR
/// CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
/// LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
/// NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
/// CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

/// Hash function for an integer value.
///
/// # Arguments
///
/// * `value` - A reference to an integer whose hash value is to be computed.
///
/// # Returns
///
/// The hash value of the integer, represented as an `i32`.
pub fn int_hash(value: &i32) -> i32 {
    *value
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_int_hash() {
        let value: i32 = 42;
        let hash_value = int_hash(&value);
        assert_eq!(hash_value, 42);
    }

    #[test]
    fn test_int_hash_negative_value() {
        let value: i32 = -10;
        let hash_value = int_hash(&value);
        assert_eq!(hash_value, -10);
    }

    #[test]
    fn test_int_hash_zero() {
        let value: i32 = 0;
        let hash_value = int_hash(&value);
        assert_eq!(hash_value, 0);
    }
}
